O design fundamental de um sistema computacional é definido pela relação entre a Unidade de Processamento e a Memória. A principal diferença reside em saber se instruções e dados compartilham um caminho comum ou utilizam canais independentes.
1. Arquitetura von Neumann
Utilizada por sistemas de propósito geral como x86-64, este modelo possui um espaço de memória unificado. A CPU acessa tanto o código quanto os dados por meio de um único barramento, resultando na Bottleneck von Neumann: a latência gerada quando a CPU precisa multiplexar o barramento entre buscar instruções e acessar operandos.
2. Arquitetura Harvard
Comum em processadores especializados e ARMv8-A implementações de cache L1, este design utiliza armazenamento físico separado de memória e caminhos de sinalização. Isso permite a busca simultânea de um operador e de um operando de dados, aumentando significativamente o throughput.
Fluxograma: Ciclo de Busca de Memória em uma arquitetura von Neumann mostrando utilização sequencial do barramento.
3. Convergência Estrutural
Sistemas HPC modernos frequentemente usam uma Arquitetura Harvard Modificada. Eles se comportam como máquinas Harvard no nível do cache L1 (cache de instrução e cache de dados separados) para maximizar a velocidade, mantendo um modelo von Neumann na memória principal RAM para flexibilidade na programação.